提到陣列,我記得以前學資料結構的時候,最頭痛的就是 Link List 這種資料結構。我們使用 BASIC 教學(真的!不騙您...因非資訊本科),資料串來串去,又入插入,又是移除的,當時實在給弄到霧煞煞,也不曉得學這些要幹嘛。
不過印象比較深刻的是,Bubble Sort 與 Quick Sort 這兩個演算法(當然也忘光了),當初的作業我記得好像是要產生一棵聖誕樹吧...XD
使用陣列,當然是我們寫程式常會用到的一種方法。幾個要注意的地方:
.確定陣列的索引值均位於合法範圍
寫陣列最查發生的錯誤就是,超出索引值的範圍,當您是 Dynamic 產生陣列時
如:
Dim a() as String
i=0
Do while i<n
Redim Preserve a(i) as String
...
i=i+1
Loop
x=a(b)
結果 b 的值超過索引範圍,就會出現這個錯誤,當然您可以用 Ubound(a) 來判斷索引的最大值。
.確定多維陣列索引值順序的正確性
.避免交錯使用陣列索引
這兩個部分指得都是避免將索引值交錯使用(有時候是 key 錯的問題)
如:
for i=1 to n
for j=1 to n
x=a(j,i) ' 應為 a(i,j) 誤寫成 a(j,i)
next j
next i
好的作法是將 i 與 j 以具意義的變數來取代。
與 Array 比較起來,我會比較建議採用 .Net 的 List 物件模型,因為 採用 List 可以使用很多內建的 Methods 來加速程式的運作與撰寫。
如:
Dim instance As List(Of T)
instance.Add("a")
instance.Add("c")
instance.Insert(1,"b")
這樣 instance 就具有 Contains, Add, Insert, Remove, IndexOf, Sort...等 Methods,使用上比 Array 方便太多了。
以前最討厭看到的錯誤訊息
1.Not enough memory
2.Stack overflow
3.Array index out of bound
現在最討厭的是
Null point exception ^_^
對耶!完全搞不清楚發生什麼事!還要查半天!